package com.ipan.kits.id;

import java.util.UUID;
import java.util.concurrent.ThreadLocalRandom;

/**
 * 唯一键生成器
 * 
 * 推荐使用UUID，经测试UUID生成速度比NanoId快；
 * 
 * @author iPan
 * @date 2021-11-13
 */
public class IdUtil {
	/*
	 * 返回使用ThreadLocalRandm的UUID，比默认的UUID性能更优
	 * 36位长度；
	 */
	public static UUID fastUUID() {
		ThreadLocalRandom random = ThreadLocalRandom.current();
		return new UUID(random.nextLong(), random.nextLong());
	}
	
	/**
	 * 返回不带-的唯一键
	 */
	public static String id() {
		return fastUUID().toString().replace("-", "");
	}
	
	// ------------------------------------------------------------------- NanoId
	/**
	 * 获取随机NanoId
	 * 21位长度
	 *
	 * @return 随机NanoId
	 * @since 5.7.5
	 */
	public static String nanoId() {
		return NanoId.randomNanoId();
	}

	/**
	 * 获取随机NanoId
	 *
	 * @param size ID中的字符数量
	 * @return 随机NanoId
	 * @since 5.7.5
	 */
	public static String nanoId(int size){
		return NanoId.randomNanoId(size);
	}
	
}
